//import "java.awt.*"; import "javax.swing.*";
//
//
///*
//	BattlePanel.java
//  	(c)1999-2008 SSC Development Team
//	Functions:
//	-Rendering the map and associated functions.
//	Allowed Dependencies: Shiny_Sword.java
//*/
//
//@implementation 
//BattlePanel JPanel
//{
//  private WalkMap cur_map;
//  private Image battle_menu;
//
//  public BattlePanel(WalkMap cur_map, int x, int y) {
//
//    battle_menu = Lib_Image.getImage("interface/Battlemenu/menu.gif");
//
//  	//X and Y are left in so that a initial camerapoint can be picked!
//  	this.cur_map = cur_map;
//
//  	this.setBackground(new Color((float) 0.0, (float) 0.0, (float) 0.0));
//
//  	//Camerawork code.
//  	if(x<180) { Buffer.setCX(0); }
//  	else if(x<cur_map.getWidth()-180) {
//  	  Buffer.setCX(cur_map.getWidth()-360);
//  	}
//  	else {
//  	  Buffer.setCX(x-180);
//  	}
//  	if(y<120) { Buffer.setCY(0); }
//  	else if(y<cur_map.getHeight()-120) {
//  	  Buffer.setCY(cur_map.getHeight()-240);
//  	}
//  	else {
//  	  Buffer.setCY(y-120);
//  	}
//
//      //Don't forget to set the entity itself ;).
//  	Buffer.Player().x=x;
//  	Buffer.Player().y=y;
//  	}
//
//  public void	Update(int x,int y) {
//  	this.cur_map = Buffer.getCurMap(); //necessary?
//
//  	//Camerawork code.
//  	if(x<180) { Buffer.setCX(0); }
//  	else if(x<(cur_map.getWidth()*24)-180) {
//  	  Buffer.setCX(x-180);
//  	}
//  	else {
//  	  Buffer.setCX((cur_map.getWidth()*24)-360);
//  	}
//  	if(y<120) { Buffer.setCY(0); }
//  	else if(y<(cur_map.getHeight()*24)-120) {
//  	  Buffer.setCY(y-120);
//  	}
//  	else {
//  	  Buffer.setCY((cur_map.getHeight()*24)-240);
//  	}
//
//    //Minor detail: Don't forget to move the entity itself ;).
//  	Buffer.Player().x=x;
//  	Buffer.Player().y=y;
//  	}
//
// 
//-(void) paintComponent(Graphics g) {
//
//      super.paintComponent(g);
//
//
//      g.setFont(Buffer.normaltxt);
//
//      if(Buffer.ScaleRatio != 1.0) {
//        ((Graphics2D) g).scale(Buffer.ScaleRatio,Buffer.ScaleRatio);
//      }
//      Lib_Image.renderMap(cur_map,g,this,Buffer.getCX(),Buffer.getCY(),360,240,0, 1);
//      Lib_Image.renderMap(cur_map,g,this,Buffer.getCX(),Buffer.getCY(),360,240,1, 1);
//
//      if(BattleFrame.Mode() < 2) {
//        Lib_Image.renderMap(cur_map,g,this,Buffer.getCX(),Buffer.getCY(),360,240,100, 1);
//        //flashing tiles
//      }
//
//      if(BattleFrame.Mode() == 2) {
//        int playx = Buffer.Player().x-Buffer.getCX();
//        int playy = Buffer.Player().y-Buffer.getCY();
//        int maxran = Buffer.Player().range;
//        int minran = (Buffer.Player().range+3)/3;
//        int atk_type = BattleFrame.Atk_type();
//
//        //TODO: add spell chooser!
//        if(atk_type > 1 && atk_type < 6) //spell 0 is cast
//        {
//          Spell tempS = new Spell(Buffer.Player().spell[atk_type-2].shortname,BattleFrame.SL_choice());
//          maxran = tempS.range;
//          minran = 0;
//          if(Buffer.Player().spell[atk_type-2].offensive == false) {
//            g.drawImage(Buffer.getAtkRangeImage(), playx, playy, this);
//          }
//        }
//
//        //Place targeting markers!
//        for(int i = minran; i<maxran+1; i++)
//        {
//          for(int j = 0; j<i;j++)
//          {
//            g.drawImage(Buffer.getAtkRangeImage(), playx-24*j, playy-24*(i-j), this);
//            g.drawImage(Buffer.getAtkRangeImage(), playx+24*j, playy+24*(i-j), this);
//            g.drawImage(Buffer.getAtkRangeImage(), playx+24*(i-j), playy-24*j, this);
//            g.drawImage(Buffer.getAtkRangeImage(), playx-24*(i-j), playy+24*j, this);
//          }
//        }
//
//      }
//
//      /* TODO: Move this to Lib_Image */
//      for(int i = 0; i < Buffer.numEnts(); i++) {
//        /* TODO: Be sure to add clipping of off screen entities !!! */
//        g.drawImage(Buffer.getEnt(i).getSprite().getFrame(Buffer.getEnt(i).f),Buffer.getEnt(i).x-Buffer.getCX(),Buffer.getEnt(i).y-Buffer.getCY(),this);
//      }
//
//      Lib_Image.renderMap(cur_map,g,this,Buffer.getCX(),Buffer.getCY(),360,240,2,1);
//
//      /* Layer 4!!! */
//      Lib_Image.renderMap(cur_map,g,this,Buffer.getCX(),Buffer.getCY(),360,240,6,1);
//
//      /* Visible Obstruction Layer (for debug purposes) */
//      //Lib_Image.renderMap(cur_map,g,this,Buffer.getCX(),Buffer.getCY(),360,240,3);
//
//      /* Menu Draw */
//      if(BattleFrame.Mode() == 1) {
//        if(BattleFrame.Bm_option() == 0) {
//          g.drawImage(battle_menu, 120, 188, this);
//          g.setColor(new Color(0,0,0,128));
//
//          //gray out abilities
//          g.fillRect(121, 203, 20, 19);
//          g.drawLine(122, 222, 140,222);
//          g.drawLine(122, 202, 140,202);
//
//          //gray out items
//          g.fillRect(169, 203, 20, 19);
//          g.drawLine(170, 222, 188,222);
//          g.drawLine(170, 202, 188,202);
//
//          //gray out stay
//          g.fillRect(145, 215, 20, 19);
//          g.drawLine(146, 234, 164,234);
//          g.drawLine(146, 214, 164,214);
//
//        }
//        else if(BattleFrame.Bm_option() == 1) {
//          g.drawImage(battle_menu, 120, 188, this);
//          g.setColor(new Color(0,0,0,128));
//
//          //gray out items
//          g.fillRect(169, 203, 20, 19);
//          g.drawLine(170, 222, 188,222);
//          g.drawLine(170, 202, 188,202);
//
//          //gray out stay
//          g.fillRect(145, 215, 20, 19);
//          g.drawLine(146, 234, 164,234);
//          g.drawLine(146, 214, 164,214);
//
//          //gray out attack
//          g.fillRect(145, 191, 20, 19);
//          g.drawLine(146, 210, 164,210);
//          g.drawLine(146, 190, 164,190);
//        }
//        else if(BattleFrame.Bm_option() == 2) {
//          g.drawImage(battle_menu, 120, 188, this);
//          g.setColor(new Color(0,0,0,128));
//
//          //gray out stay
//          g.fillRect(145, 215, 20, 19);
//          g.drawLine(146, 234, 164,234);
//          g.drawLine(146, 214, 164,214);
//
//          //gray out attack
//          g.fillRect(145, 191, 20, 19);
//          g.drawLine(146, 210, 164,210);
//          g.drawLine(146, 190, 164,190);
//
//          //gray out abilities
//          g.fillRect(121, 203, 20, 19);
//          g.drawLine(122, 222, 140,222);
//          g.drawLine(122, 202, 140,202);
//        }
//        else if(BattleFrame.Bm_option() == 3) {
//          g.drawImage(battle_menu, 120, 188, this);
//          g.setColor(new Color(0,0,0,128));
//
//          //gray out items
//          g.fillRect(169, 203, 20, 19);
//          g.drawLine(170, 222, 188,222);
//          g.drawLine(170, 202, 188,202);
//
//          //gray out attack
//          g.fillRect(145, 191, 20, 19);
//          g.drawLine(146, 210, 164,210);
//          g.drawLine(146, 190, 164,190);
//
//          //gray out abilities
//          g.fillRect(121, 203, 20, 19);
//          g.drawLine(122, 222, 140,222);
//          g.drawLine(122, 202, 140,202);
//        }
//        else if(BattleFrame.Bm_option() > 9 && BattleFrame.Bm_option() < 14) {
//          Lib_Image.spellMenu(g,Buffer.Player(),BattleFrame.Bm_option()-10,BattleFrame.SL_choice());
//        }
//      }
//      else if(BattleFrame.Mode() == 2) {
//        //Lib_Image.textBox(g,"Pick the target of your attack","Choose wisely.","Lest you make large mistakes");
//        int area_size = 1;
//        if(BattleFrame.Atk_type() > 1 && BattleFrame.Atk_type() < 6) {
//          Spell tempS = new Spell(Buffer.Player().spell[BattleFrame.Atk_type()-2].shortname,BattleFrame.SL_choice());
//          area_size = tempS.area_size;
//        }
//
//        g.setColor(new Color(255,255,192));
//
//        g.drawRect(Buffer.getEnt(BattleFrame.getTarget()).x-Buffer.getCX(),
//                   Buffer.getEnt(BattleFrame.getTarget()).y-Buffer.getCY(),
//                   24,24 );
//
//        if(area_size > 1) {
//          int x = Buffer.getEnt(BattleFrame.getTarget()).x-Buffer.getCX();
//          int y = Buffer.getEnt(BattleFrame.getTarget()).y-Buffer.getCY();
//
//          //Place targeting markers!
//          for(int i = 1; i<area_size; i++)
//          {
//            for(int j = 0; j<i;j++)
//            {
//              g.drawRect(x-24*j, y-24*(i-j), 24, 24);
//              g.drawRect(x+24*j, y+24*(i-j), 24, 24);
//              g.drawRect(x+24*(i-j), y-24*j, 24, 24);
//              g.drawRect(x-24*(i-j), y+24*j, 24, 24);
//            }
//          }
//
//          /*g.drawRect(x+24,y,24,24);
//          g.drawRect(x,y+24,24,24);
//          g.drawRect(x-24,y,24,24);
//          g.drawRect(x,y-24,24,24);
//          if(area_size>2) {
//            g.drawRect(x+48,y,24,24);
//            g.drawRect(x,y+48,24,24);
//            g.drawRect(x-48,y,24,24);
//            g.drawRect(x,y-48,24,24);
//
//            g.drawRect(x+24,y+24,24,24);
//            g.drawRect(x-24,y+24,24,24);
//            g.drawRect(x-24,y-24,24,24);
//            g.drawRect(x+24,y-24,24,24);
//          }*/
//        }
//
//        Lib_Image.targetStatBox(g, Buffer.getEnt(BattleFrame.getTarget()));
//      }
//      else if(BattleFrame.Mode() == 7) {
//        if(Buffer.DetectTalk()>0) {
//          Lib_Image.textBox(g,Buffer.getEnt(Buffer.DetectTalk()).resptext);
//         }
//      }
//
//      if(BattleFrame.Mode() != 6) {
//        /* Statistics box in top right corner! */
//        Lib_Image.playerStatBox(g);
//        Lib_Image.terrainStatBox(g);
//      }
//      else {
//        Lib_Image.statsPage(g);
//      }
//  }
//}
